package br.com.abelha.manager;

import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup.LayoutParams;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;
import br.com.abelha.manager.db.DAOFormA;
import br.com.abelha.manager.db.DAOGenerateFichaAWs;
import br.com.abelha.manager.entity.FormA;
import br.com.abelha.manager.ws.RequestAbelhaService;

/**
 * 
 * @author dalsonsouza
 * Classe responsavel por recuperar as informacoes iniciais de login, tais como:
 * Quantidade de visitas, equipe pertencente, etc...
 *
 */
public class LoginStartup extends Activity{
	
	private TextView itensUsuario;
	private TextView mensagemVisitas;
	private Button btLaunchVisitas;
	private View exitButton;
	private Button syncButton;
	
	private List<FormA> listaFormA;

	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		
		setContentView(R.layout.login_startup);
		
		String mensagem = "Ola, #user \n" +
				"Voce pertence a Equipe: ALFA \n" +
				"Segmento: 01 \n" +
				"Area: 01 \n" +
				"Micro-area: 01 \n";
		
		SharedPreferences prefs = getSharedPreferences("Abelha", MODE_PRIVATE);
		mensagem = mensagem.replace("#user", prefs.getString("username", null));
		
		itensUsuario = (TextView) findViewById(R.id.mostrarItensUsuario);
		itensUsuario.setText(mensagem);
		listaFormA  = new ArrayList<FormA>();
		
		mensagemVisitas = (TextView) findViewById(R.id.mostrarVisitas);
		
		btLaunchVisitas = (Button) findViewById(R.id.btIniciarVisitas);
		exitButton = (Button) findViewById(R.id.sair);
		
		syncButton = (Button) findViewById(R.id.syncButton);
		
		btLaunchVisitas.setOnClickListener(new View.OnClickListener() {
			public void onClick(View v) {
				launchVisitas();
			}
		});
		
		exitButton.setOnClickListener(new View.OnClickListener() {
			public void onClick(View v) {
				moveTaskToBack(true);
				finish();
				System.exit(0);
			}
		});
		
		//final DAOGenerateFichaAWs daoGenerateFichaAWs = new DAOGenerateFichaAWs(this); 
		
		syncButton.setOnClickListener(new View.OnClickListener() {
			public void onClick(View v) {
				
				try {
					
					/**
					 * Coleta de itens FichaC
					 */
					
					List<FormA> listaParaGravar = new RequestAbelhaService().
		        			user("teste").
		        			pass("teste").
		        			uri("http://100.100.100.64/PFS/sincroniza.asmx/getFichaA").
		        			requestColmeiaServer(); 
					
					DAOFormA daoFormA = new DAOFormA(v.getContext());
					
					if(!listaParaGravar.isEmpty()){
						
						//Remove todas as fichas...
						daoFormA.truncateFichaA();
						
						for (FormA formA : listaParaGravar) {
							
							try {
								daoFormA.insertFromWs(formA);
								
							} catch (Throwable e) {
								e.printStackTrace();
							}
						}
						
						
					}
					
					
					
					/*if(daoGenerateFichaAWs.getAllContentesToServer()){
						exibirMensagem("Abelha", "Arquivo gerado com sucesso!");
					}else{
						exibirMensagem("Erro", "Erro ao construir XML");
					}*/
					
				} catch (Exception e) {
					exibirMensagem("Erro", "Erro ao construir XML" + e);
				}
				
				
			}
		});
		
		/**
		 * Tenta recuperar do servidor, as visitas decorrentes
		 */
		
		String visitas = null;
		
		retrieveVisitsFromServer();
		
		if(listaFormA.isEmpty()){
			visitas = "Voce nao possui visitas agendadas.";
			
		}else{
			visitas = "Voce tem " + listaFormA.size() + " visitas programadas.";
			
			Button btnVisitasAgendadas = new Button(this);
			btnVisitasAgendadas.setText("Listar Visitas Agendadas");
			
			LayoutParams params = new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);
			btnVisitasAgendadas.setLayoutParams(params);
			
			btnVisitasAgendadas.setOnClickListener(new View.OnClickListener() {
				public void onClick(View v) {
					launchVisitasAgendadas();
				}
			});
			
			LinearLayout container = (LinearLayout)findViewById(R.id.layoutStartup);
            container.addView(btnVisitasAgendadas);
			
		}
		
		mensagemVisitas.setText(visitas);
		
	}
	
	private void retrieveVisitsFromServer() {
	}

	public void launchVisitas(){
		 //Intent i = new Intent(this, FichaA.class);
		Intent i = new Intent(this, MenuFichas.class);
	    startActivity(i);
	}
	
	public void launchVisitasAgendadas(){
		Intent i = new Intent();
		startActivity(i);
	}
	
	public void exibirMensagem(String titulo, String mensagem){
		AlertDialog.Builder builder = new AlertDialog.Builder(this);
    	builder.setTitle(titulo);
    	builder.setMessage(mensagem);
    	builder.setNeutralButton("OK", null);
    	builder.show();
	}

}
